package fr.afcepf.atod18.restaurants.web;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.apache.myfaces.config.element.FacesConfig;
import org.apache.myfaces.config.element.FacesConfigData;

import fr.afcepf.atod18.restaurants.entity.Restaurant;
import fr.afcepf.atod18.restaurants.service.IServiceRestaurant;
import fr.afcepf.atod18.utilitaires.entity.InfoSession;
import fr.afcepf.atod18.utilitaires.web.ConnexionMB;

@ManagedBean(name = "listeRestaurantMB")
@SessionScoped
public class ListeRestaurantMB {

    @ManagedProperty(value = "#{serviceRestaurant}")
    private IServiceRestaurant serviceRestaurant;
    @ManagedProperty(value = "#{listeProduitsMB}")
    private ListeProduitsMB listeProduitsMB;
    private ConnexionMB connexionMB;

    private int idSelRestaurant;

    private List<Restaurant> listeRestaurants;
    private InfoSession infoSession;

    /**
     * @return the infoSession
     */
    public InfoSession getInfoSession() {
        return infoSession;
    }

    /**
     * @param infoSession
     *            the infoSession to set
     */
    public void setInfoSession(InfoSession infoSession) {
        this.infoSession = infoSession;
    }

    @PostConstruct
    public void chargementListes() {
        infoSession = new InfoSession();
        infoSession.setEstConnecte(false);
        infoSession.setAdmin(false);
        infoSession.setClient(false);
        infoSession.setRestaurateur(false);
        infoSession.setPageCourante("Accueil");
        
        this.listeRestaurants = serviceRestaurant.rechercherTout();
        System.out.println("listeResto ok");

        FacesContext fc = FacesContext.getCurrentInstance();
		if(fc !=null && fc.getExternalContext()!=null){
			fc.getExternalContext().getApplicationMap().put("infoSession", infoSession);
		}
    }

    public String doSelection() {
        infoSession.setIdSelRestaurant(idSelRestaurant);
        Restaurant restaurant = serviceRestaurant
                .rechercherParId(infoSession.getIdSelRestaurant());
        infoSession.setRestaurantSelectionne(restaurant);
        infoSession.setPanier(null);
        listeProduitsMB.setIdPrec(0);
        listeProduitsMB.setInfoSession(infoSession);
        infoSession.setPageCourante("listeProduits");

        infoSession.setPageCourante("listeProduits");
        if (infoSession.isEstConnecte()==false){
        	return "listeProduits";
        }
        else {
        	return "listeProduitsClient";
        }
    }

    public ListeRestaurantMB() {
        super();
    }
    public List<Restaurant> getListeRestaurants() {
//        this.listeRestaurants = serviceRestaurant.rechercherTout();
//        System.out.println("listeRestaurants.size=" + listeRestaurants.size());
        return listeRestaurants;
    }
    public void setListeRestaurants(List<Restaurant> listeRestaurants) {
        this.listeRestaurants = listeRestaurants;
    }
    /**
     * @return the serviceRestaurant
     */
    public IServiceRestaurant getServiceRestaurant() {
        return serviceRestaurant;
    }
    /**
     * @param paramServiceRestaurant
     *            the serviceRestaurant to set
     */
    public void setServiceRestaurant(IServiceRestaurant paramServiceRestaurant) {
        serviceRestaurant = paramServiceRestaurant;
    }
    /**
     * @return the listeProduitsMB
     */
    public ListeProduitsMB getListeProduitsMB() {
        return listeProduitsMB;
    }
    /**
     * @param paramListeProduitsMB
     *            the listeProduitsMB to set
     */
    public void setListeProduitsMB(ListeProduitsMB paramListeProduitsMB) {
        listeProduitsMB = paramListeProduitsMB;
    }
    /**
     * @return the idSelRestaurant
     */
    public int getIdSelRestaurant() {
        return idSelRestaurant;
    }
    /**
     * @param paramIdSelRestaurant the idSelRestaurant to set
     */
    public void setIdSelRestaurant(int paramIdSelRestaurant) {
        idSelRestaurant = paramIdSelRestaurant;
    }
    
}
